---@meta _

---@class AceHook-2.0 提供安全的函数、方法和脚本钩子。AceHook-2.0 已弃用，推荐使用 AceHook-2.1。
---[文档](https://web.archive.org/web/20080720042148/http://www.wowace.com/wiki/AceHook-2.0)
local AceHook = {}

---钩子
--- `self:Hook("functionName", ["handlerName" | handler])`
--- `self:Hook(object, "methodName", ["handlerName" | handler])`
---
---@param arg1 string|table 函数名称或对象名称
---@param arg2 function|string 方法名称、处理函数名
---@param arg3? table|function 处理对象或处理函数
function AceHook:Hook(arg1, arg2, arg3) end

---解除钩子
--- `self:Unhook("functionName")`
--- `self:Unhook(ObjectName, "Method")`
---@param arg1 string 函数名
---@param arg2? any 方法
function AceHook:Unhook(arg1, arg2) end

---从调用源取消所有活动挂钩	
function AceHook:UnhookAll() end

---列出此源中已注册的钩子
function AceHook:HookReport() end
	
---是否已挂钩
---@param obj string 对象名称或对象名称
---@param method string 方法名称
---@return boolean hooked 已挂钩
---@return any handler
function AceHook:IsHooked(obj, method) end

---钩子脚本
---@param arg1 table|string 对象或对象名
---@param arg2 function|string 方法名称、处理函数名
---@param arg3? table|function 处理对象或处理函数
function AceHook:HookScript(arg1, arg2, arg3) end
